package service;

import java.io.InputStream;
import java.util.List;

import dao.TransacaoDAO;
import entity.CategoriaTransacao;
import entity.ContaCredito;
import entity.Fatura;
import entity.Transacao;
import enumeration.TipoTransacaoEnum;

public interface TransacaoService extends ManutencaoService<Transacao> {

    void setTransacaoDAO(TransacaoDAO compraDAO);

    Transacao criarTransacao();

    List<Transacao> importarArquivoDeTransacoes(ContaCredito contaCredito,
	    InputStream file);

    void salvar(Transacao transacao);

    void salvarImportacao(List<Transacao> listaTransacoes);

    List<CategoriaTransacao> listarCategoriasTransacaoAtivasPorTipoTransacao(
	    TipoTransacaoEnum tipoTransacao);

    void criarParcelasDaTransacao(Transacao transacao);

    void calcularValorDasParcelas(Transacao transacao);

    void criarRecorrenciaTransacao(Transacao transacao);

    void salvarTransacaoComRecorrencia(Transacao transacao);

    void criarTransacaoDestinoDaTransferencia(Transacao transacao);

    void salvarImportacaoContaCredito(Transacao transacao, Fatura fatura);

    void removerTransacaoComRecorrencia(Transacao transacao);
}
